9291
22746
Fechado. Esta pergunta não atende às diretrizes do Stack Overflow. Atualmente não está aceitando respostas.
Quer melhorar esta questão? Atualize a pergunta para que esteja no tópico do Stack Overflow.
Fechado há 4 anos.
Melhore esta questão
Estou construindo um aplicativo Shiny que processa vários arquivos de texto selecionados por um usuário.
A saída é um enorme quadro de dados com milhões de linhas e dezenas de colunas.
Estou interessado agora em permitir que um usuário filtre linhas interativamente, selecione colunas e resuma colunas (escolhendo em uma lista de funções como média, sd, máximo, mínimo, soma, etc ...). O resultado seria um quadro de dados menor resumindo os dados por seleção do usuário - basicamente, preciso criar uma GUI que implemente uma funcionalidade básica da biblioteca dplyr.
Em geral, eu sei como fazer isso criando manualmente um monte de elementos da GUI e alimentando-os em uma função de servidor com vários comandos dplyr. Uma vez que esta parece ser uma funcionalidade bastante padrão (GUI que filtra e resume um dataframe), antes de começar a construí-lo do zero, gostaria de saber se há algo "pronto para uso" que posso usar no estado em que se encontra ou como ponto de partida . 
Eu sei que você disse que rpivotTable não era exatamente o que você queria, mas acho que pode ser configurado para fazer parte do trabalho pesado,
Aqui está um exemplo (usando rpivotTable para a manipulação, DT para mostrar o data.frame, rvest para analisar o innerHTML do DOM, pode haver um formato de dados melhor para passar o objeto da tabela do lado do cliente, mas esta é uma prova de conceito ):
ui.R
biblioteca (brilhante)
biblioteca (DT)
biblioteca (rpivotTable)
FullPage <- fluidPage (
DT :: dataTableOutput ('aSummaryTable'),
rpivotTableOutput ('RESULTS')
)
Página inteira
server.R:
biblioteca (brilhante)
biblioteca (rpivotTable)
biblioteca (DT)
biblioteca (rvest)
função (entrada, saída, sessão) {
# Faça alguns dados de amostra
qbdata <- reativo ({
expand.grid (LETRAS, 1: 3)
})
# Limpe o html e armazene como reativo
summarydf <- eventReactive (input $ myData, {
input $ myData%>%
read_html%>%
html_table (fill = TRUE)%>%
# Acontece que existem duas tabelas em uma rpivotTable, queremos a segunda
. [[2]]
})
# mostrar df como DT :: datatable
output $ aSummaryTable <- DT :: renderDataTable ({
tabela de dados (summarydf (), rownames = FALSE)
})
# Sempre que a configuração for atualizada, ligue de volta com o conteúdo da tabela
output $ RESULTS <- renderRpivotTable ({
rpivotTable (
qbdata (),
onRefresh =
htmlwidgets :: JS ("function (config) {
Shiny.onInputChange ('myData', document.getElementById ('RESULTS'). InnerHTML);
} ")
)
})
}
|
Não é a resposta que você está procurando? Navegue por outras questões marcadas com r dplyr brilhante ou faça sua própria pergunta.